////MT1176 - MT1199

//MT1176

// #include<stdio.h>
// #include<math.h>

// int main() 
// {
//     int x1, y1, x2, y2;
//     int res = 0;
//     scanf("%d %d %d %d", &x1, &y1, &x2, &y2);

//     double x = x2 - x1;
//     double y = y2 - y1;

//     double ressult = sqrt(x * x + y * y);

//     //精度问题
//     //涉及计算还是用double
//     res = (int) ceil(ressult);
//     printf("%d", res);

//     return 0;
// }




//MT1176

// #include<stdio.h>
// #include<math.h>

// int main() 
// {
//     int x1, y1, x2, y2, x3, y3;
//     int res = 0;
//     scanf("(%d,%d) (%d,%d)\n(%d,%d)", &x1, &y1, &x2, &y2, &x3, &y3);

//     //step.1 判断角度
//     double r = atan2(abs(y2 - y1), abs(x2 - x1));
//     double r0 = atan2(abs(y3 - y2), abs(x3 - x2));
//     //printf("%d %d\n", r, r0);

//     //step.2 判断长度
//     int flag = 0;
    
//     if (x1 <= x2 && y1 <= y2) 
//     {  // 线段从左下到右上
//         if (x3 >= x1 && x3 <= x2 && y3 >= y1 && y3 <= y2) 
//         {
//             flag = 1;
//         }
//     } else if (x1 >= x2 && y1 >= y2) 
//     {  // 线段从右上到左下
//         if (x3 <= x1 && x3 >= x2 && y3 <= y1 && y3 >= y2) 
//         {
//             flag = 1;
//         }
//     } else if (x1 <= x2 && y1 >= y2) 
//     {  // 线段从左上到右下
//         if (x3 >= x1 && x3 <= x2 && y3 <= y1 && y3 >= y2) 
//         {
//             flag = 1;
//         }
//     } else if (x1 >= x2 && y1 <= y2) 
//     {  // 线段从右下到左上
//         if (x3 <= x1 && x3 >= x2 && y3 >= y1 && y3 <= y2) 
//         {
//             flag = 1;
//         }
//     }

//     if(r == r0 && flag)
//     {
//         printf("YES");
//     }
//     else
//     {
//         printf("NO");
//     }

//     return 0;
// }


    //这傻逼判断角度再判断长度太他妈傻逼了
    //还是用点到直线距离来搞

    //但是话又说回来
    //解决了
    //线段只考虑了两种情况 其实有四种........

//MT1176

// #include<stdio.h>
// #include<math.h>

// int main() 
// {
//     int x1, y1, x2, y2, x3, y3;

//     scanf("(%d,%d) (%d,%d)\n(%d,%d)", &x1, &y1, &x2, &y2, &x3, &y3);

//     //直接用点到线段距离
//     int a = y2 - y1;
//     int b = x1 - x2;
//     int c = x2 * y1 - x1 * y2;
//     double d = abs(a * x3 + b * y3 + c) / sqrt((a * a) + (b * b));

//     //判断在线段延长线外的情况
//     int max_x = x1 > x2 ? x1 : x2;
//     int max_y = y1 > y2 ? y1 : y2;

//     int min_x = x1 < x2 ? x1 : x2;
//     int min_y = y1 < y2 ? y1 : y2;

//     if(x3 > max_x || y3 > max_y || x3 < min_x || y3 < min_y)
//     {
//         printf("NO");
//         return 0;
//     }

//     if (d == 0)
//     {
//         printf("YES");
//     }
//     else
//     {
//         printf("NO");
//     }
    
//     return 0;
// }





//MT1183

// #include<stdio.h>
// #include<math.h>

// int main() 
// {
//     int x1, y1, x2, y2, x3, y3, x4, y4;
//     scanf("%d %d %d %d\n%d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4);

//     if(x1 < x3 && y1 > y3 && x2 > x4 && y2 < y4)
//     {
//         printf("YES");
//     }
//     else
//     {
//         printf("NO");
//     }
    
    
    
//     return 0;
// }






//MT1184

// #include<stdio.h>
// #include<math.h>

// int main() 
// {
//     int x1, y1, x2, y2, x3, y3, x4, y4;
//     scanf("%d %d %d %d\n%d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4);

//     //判断不是相交的

//     //在外部
//     if(x3 > x2 || x4 < x1 || y3 < y2 || y4 > y1)
//     {
//         printf("NO");
//     }
//     //在内部
//     else if(x1 < x3 && y1 > y3 && x2 > x4 && y2 < y4
//             || x1 > x3 && y1 < y3 && x2 < x4 && y2 > y4)
//     {
//         printf("NO");
//     }
//     //重合
//     else if(x1 == x3 && y1 == y3 && x2 == x4 && y2 == y4)
//     {
//         printf("NO");
//     }
//     //相切(一个点)
//     else if(x1 == x4 && y1 == y4 || x2 == x3 && y2 == y3
//         || x2 == x3 && y4 == y1 || x1 == x4 && y2 == y3)
//     {
//         printf("NO");
//     }

//     else
//     {
//         printf("YES");
//     }

//     return 0;
// }





//MT1185

// #include <stdio.h>

// int main() 
// {
//     int i = 0;
//     for (i = 0; i < 8; i++)
//     {
//         printf("%d ", i);
//     }

//     return 0;
// }


//MT1186

// #include <stdio.h>

// int main() 
// {
//     int n = 0;
//     scanf("%d", &n);

//     do
//     {
//       printf("%d ", n);
//       n--;
//     }
//     while (n > 0);

//     return 0;
// }




//MT1187

// #include <stdio.h>

// int main() 
// {
//     int i = 0;
//     int sum = 0;

//     for ( i = 1; i <= 10; i++)
//     {
//         sum += i;
        
//     }
//     printf("%d ", sum);
//     return 0;
// }



//MT1188

// #include <stdio.h>

// int main() 
// {
//     int n = 0;
//     double sum = 0.0;
//     scanf("%d", &n);
//     float f;

//     for (int i = 0; i < n; i++)
//     {
//         scanf("%f", &f);
//         sum += f;
       
//     }

//      printf("%.2f ", sum / n);

//     return 0;
// }



//MT1189

// #include <stdio.h>

// int main() 
// {
//     int n = 0;
//     double sum0 = 0.0;
//     double sum1 = 0.0;
//     double temp = 0.0;
//     scanf("%d", &n);

//     for (int i = 0; i < n; i++)
//     {
//         scanf("%lf", &temp);
//         if (temp > 0)
//         {
//             sum0 += temp;
//         }
//         else
//         {
//             sum1 += temp;
//         }
       
//     }

//      printf("%lf %lf", sum0, sum1);
     
//     return 0;
// }



//MT1190

// #include <stdio.h>

// double mul (double x, double y)
// {
//     printf("%lf\n", x * y);
// }

// int main() 
// {
//     int a, b, c, d;
//     double x, y;

//     for (int i = 0; i < 5; i++)
//     {
//         scanf("%d/%d %d/%d\n", &a, &b, &c, &d);

//         x = (double)a / (double)b;
//         y = (double)c / (double)d;

//         mul(x, y);
//     }

//     return 0;
// }


//MT1191

// #include <stdio.h>

// int main() 
// {
//     int N, M;
//     scanf("%d %d", &N, &M);

//     for (int i = 0; i < M; i++)
//     {
//         N /= 2;
//     }

//     printf("%d", N);

//     return 0;
// }




//MT1192

// #include <stdio.h>

// int main() 
// {
//     int N, M;
//     scanf("%d %d", &N, &M);

//     for (int i = 0; i < M; i++)
//     {
//         N *= 2;
//     }

//     printf("%d", N);

//     return 0;
// }



//MT1193

// #include <stdio.h>

// int main() 
// {
//     int odd = 1;
//     int N = 0;
//     int sum = 0;
//     scanf("%d", &N);

//     for (int i = 0; i < N; i++)
//     {
//         sum += odd * odd;
//         odd += 2;
//     }

//     printf("%d", sum);

//     return 0;
// }







//MT1195

// #include <stdio.h>

// int main() 
// {
//     int N, M;
//     double sum = 0.0;
//     scanf("%d %d", &N, &M);

//     for (; N <= M; N += 1)
//     {
    
//         sum += 1 / ((double)N * (double)N) ;
//     }

//     printf("%lf", sum);

//     return 0;
// }



//MT1196

// #include <stdio.h>

// int main() 
// {
//     int n = 0;
//     int sum = 1;
//     scanf("%d", &n);

//     for (int i = 1; i <= n; i++)
//     {
//         sum *= i;
//     }

//     printf("%d!=%d", n, sum);

//     return 0;
// }




//MT1197

// #include <stdio.h>

// int main() 
// {
//     int n = 0;
//     int sum = 1;
//     int all_sum = 0;
//     int k = 0;
//     scanf("%d", &n);

//     for (int j = 1; j <= n; j++)
//     {
//         k = j;
        
//         sum = 1;
//         for ( int i = 1; i <= k; i++)
//         {
//             sum *= i;  
//         }
//         all_sum += sum;
//     }

//     printf("%d", all_sum);


//     return 0;
// }





//MT1198

// #include <stdio.h>

// int main() 
// {
//     int n = 0;
//     int sum = 1;
//     int all_sum = 0;
//     int k = 0;
//     scanf("%d", &n);

//     for (int j = 1; j <= n; j++)
//     {
//         k = j;
        
//         sum = 1;
//         for ( int i = 1; i <= k; i++)
//         {
//             sum *= i;  
//         }
//         if (1 == j)
//         {
//             all_sum = sum;
//         }
//         else
//         {
//             all_sum -= sum;
//         }
//     }
        

//     printf("%d", all_sum);


//     return 0;
// }



//MT1199

#include <stdio.h>

int main() 
{
    int n, r;
    double sum = 1;
    double sum0 = 1;
    scanf("%d %d", &n, &r);

    for (int i = 1; i <= n; i++)
    {
        sum *= i;
    }

    for (int j = 1; j <= n - r; j++)
    {
        sum0 *= j;
    }

    double res = sum / sum0;
    printf("%.2lf", res);

    return 0;
}